/**
 * @description API正常回调服务类
 *
 * Copyright (C) [2025] [版权所有者（北京资源律动科技有限公司）]. All rights reserved.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 *
 * 注意：本代码基于 AGPLv3 协议发布。若通过网络提供服务（如 Web 应用），
 * 必须公开修改后的完整源代码（包括衍生作品），详见协议全文。
 */
package com.kaifangqian.modules.api.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.kaifangqian.common.constant.ApiConstants;
import com.kaifangqian.modules.api.entity.ApiNormalReq;
import com.kaifangqian.modules.api.mapper.ApiNormalReqMapper;
import com.kaifangqian.modules.api.service.IApiNormalReqService;
import org.springframework.stereotype.Service;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.Objects;

/**
 * @author zhenghuihan
 * @description 表
 * @createTime 2022/9/2 18:05
 */
@Service
public class ApiNormalReqServiceImpl extends ServiceImpl<ApiNormalReqMapper, ApiNormalReq> implements IApiNormalReqService {

    @Override
    public void recordNormalReq(ApiNormalReq req) {
        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        HttpServletRequest request = Objects.requireNonNull(attributes).getRequest();
        req.setToken(request.getAttribute(ApiConstants.APP_AUTH_TOKEN).toString());
        if (request.getAttribute(ApiConstants.OPERATOR_ACCOUNT) != null) {
            req.setOperatorAccount(request.getAttribute(ApiConstants.OPERATOR_ACCOUNT).toString());
        }
        req.setUniqueCode(request.getAttribute(ApiConstants.UNIQUE_CODE).toString());
        req.setReqUrl(request.getRequestURI().toString());
        req.setReqPara(request.getAttribute(ApiConstants.REQ_PARA).toString());
        req.setCreateTime(new Date());
        this.save(req);
    }

    @Override
    public void recordNormalRes(String res) {
        ApiNormalReq req = new ApiNormalReq();
        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        HttpServletRequest request = Objects.requireNonNull(attributes).getRequest();
        req.setResPara(res);
        req.setToken(request.getAttribute(ApiConstants.APP_AUTH_TOKEN).toString());
        req.setOperatorAccount(request.getAttribute(ApiConstants.OPERATOR_ACCOUNT).toString());
        req.setUniqueCode(request.getAttribute(ApiConstants.UNIQUE_CODE).toString());
        req.setReqUrl(request.getRequestURI().toString());
        req.setReqPara(request.getAttribute(ApiConstants.REQ_PARA).toString());
        req.setCreateTime(new Date());
        this.save(req);
    }
}
